Integrated circuits (ICs) are designed today with computers using a computer program known as an integrated circuit design tool. With this tool, a circuit designer enters symbolic or geometrical shapes representing elements of an integrated circuit design into a computer and manipulates the size and location of the elements to produce a simulated layout of the circuit. The geometrical shapes correspond to circuit elements such as transistors, resistors and capacitors and appear on a computer display screen. These shapes represent a physical layer of material in an integrated circuit such as metal or polysilicon layers, with each material typically shown in a different color. From this simulated layout, the design tool generates data for producing photolithographic masks that are then used for fabricating the integrated circuit.
Layouts may be manually created using an editor, command line or other input means to the design apparatus. Layouts may also be automatically created in certain design apparatus using "generator" technology. This technology strives to capture the steps needed to create a layout in what is called a generator, a user-written computer program defining the layout. A generator can be parameterized to handle different device sizes (such as transistors and via sizes), different number of inputs and outputs, etc. The generator can then be rerun with different parameters to automatically create a new layout. The generator can also be used to generate a layout in a new process technology (technology porting). Generators may be user written or, in newer IC design apparatus, generated by the apparatus from a layout entered graphically by a user.
Some IC design apparatus include a compactor that speeds layout design by automating the task of reducing the design area. A user gives the compactor a preliminary layout. The compactor then moves circuit elements, or components, of the design to optimize for two goals: that the layout be small and that it be design rule correct. The user can therefore have a great deal of control on the layout without performing the tedious work required to turn a sketch of a layout into a correct, space-optimized design.
Compactors are well known in the art and are described in a number of references such as Physical Design Automation of VLSI Systems, Benjamin/Cummings Publishing Co., Inc., 1988. Briefly, compactors attempt to reduce the area of an IC design by moving components of the design in one of x or y directions for 1-D compactors, or both x and y simultaneously for 2-D compactors into as close as possible to other layout components without violating design rules. Basic compactors work strictly from separation constraints between layout components, constraints dictated by process design rules and the need to maintain electrical connectivity between connected components. These constraints are met as the design is compacted, first in one direction and then in the other. Consequently, the post compaction configuration, or topology, of the layout may be quite different than the initial topology. More sophisticated compactors allow the user to control the topology of the compacted layout by imposing user defined constraints on the compaction process. These include allowing the user to specify minimum constraints, maximum constraints and equality (alignment) constraints. A minimum constraint limits the closest distance two specified components can be placed apart from each other. A maximum constraint limits the greatest distance two specified components can be placed apart from each other. An equality constraint specifies the exact distance between two layout components. By an appropriate use of these user defined constraints beyond the design rule constraints extracted by the compactor from the layout, a user is better able to control the placement of components in the compacted layout. Compactors may be used with layouts that are manually drawn or layouts that are created with generators.
A physical boundary constraint (PBC) is one form of a user defined equality constraint. However, instead of the constraint being between two layout components, the constraint is specified between a layout component and one of the boundaries of the layout. Physical boundary constraints serve to position a selected edge of a component on a selected boundary of the layout and to prevent the layout component from moving into free space even if the space is available. This constraint is desirable where the position of a component is to be maintained at an area boundary for connectivity or other purposes.
However, physical boundary constraints are not adequate in a generator environment, where a device's size may change because of a change in a generator parameter or because of a change in the process technology. The following example, which refers to FIGS. 1A through 1D, makes this clear. The problem facing the user is to align the centers of these components while placing one or both of them on the left physical boundary of the layout. In FIG. 1A are shown two layout components C0 and C1. The desired result is achieved by placing physical boundary constraints on the left edges of both components so that both edges fall on the left physical boundary constraint. However, if components C0 and C1 were to have different widths, as in FIG. 1B, as a result of changing the generator parameters or porting the design to a different technology, the desired layout would not be achieved. The component centers are no longer aligned in FIG. 1B, although the compaction process still satisfies the specified physical boundary constraints. The user must then intervene to correct the layout.
The problem cannot be conclusively solved by specifying other physical design constraints. The user might specify a physical boundary constraint on component C0 to make its left edge fall on the left physical boundary of the layout and an equality constraint between the centers of C0 and C1. This would appear to achieve the goal, as shown in FIG. 1C. But this pair of constraints works if and only if C0 is wider than C1. If the widths of the two components is reversed, as in FIG. 1D, an impossible layout results. The left edge of C1 extends beyond the left edge of the layout. The problem is said to be overconstrained because the compactor cannot yield a sensible result while satisfying the user defined constraints. If the layout were generator specified, the generation process fails and the designer must intervene manually to correct the problem.
Another constraint of value to users is a gridding constraint. Most compactors allow the user to specify a single x,y grid on which the layout components must fall to meet manufacturing tolerances or routing requirements. When the grid size is specified to the compactor, the layout components are moved during the compaction process to place each component ultimately on the grid. However, prior compactors have only permitted the user to specify a single number for both the x direction and the y direction, or at most one number for the x direction and another number for the y direction. This has been found to be quite limiting because the routing grids are different for routing on different layers of an integrated circuit. For example, in a given fabrication process, the grid for routing a first metal layer might be 5 and the grid for routing a second metal layer might be 6.
None of the constraints discussed above assure that the relative positions of components in an initial topology will be preserved after compaction if device sizes change because of a change in process technology or a change in generator parameters. This can lead to unexpected and undesirable compaction results. For example, FIGS. 2A-2E show what can unexpectedly happen with prior compactors. FIG. 2A shows the initial topology of a layout. It is desired to compact the layout, which the compactor does first in the y (down) direction and then in the x (left) direction. As shown in FIG. 2B, components C0 and C1 move downward until they are separated by design rule constraints, and C3 moves leftward until it is separated from C1 and C2 by such constraints. An equality constraint to align the left edges of C1 and C2 is met prior to compacting. FIG. 2C shows the layout when, due to a generator parameter change of technology port, the size of C1 shrinks. The equality constraint must now be met through the compacting. The compactor compacts the layout first in the down direction, as shown in FIG. 2D, moving C0 to the left of C1. The layout is then compacted in the left direction, as shown in FIG. 2E, moving C0 further to the left to avoid C1 as C1 moves to satisfy the equality constraint. The result is a layout area larger in width than necessary, since there is room for C0 above C1 if C0 had not been moved.
Accordingly, an object of the invention is to provide a design apparatus and method that overcomes the limitations of prior compactors. More particularly, an object of the invention is to provide such method and apparatus that permits logical boundary constraints, multiple grid constraints or pre-compaction constraints on compacting to improve the resulting design.